<?php
// 解析excel
include "../PHPExcel-1.8/Classes/PHPExcel/IOFactory.php";
// SQL
include_once "./stuSQL.php";
include_once "./teaSQL.php";
include_once "./couSQL.php";

/** php 接收流文件
 * @param  String  $file 接收后保存的文件名
 * @return boolean
 */
$uptypes = array(       //可以接收的格式

    'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'

);

$max_file_size = 200000000; //上传文件大小限制, 单位BYTE

$file = $_FILES["file"];

$fileName = $file["name"];

$filetype = $file["type"];
// echo $filetype;

$filesize = $file["size"];

if (!in_array($filetype, $uptypes)) { // 文件类型判断

    $result = [
        'code' => '-1',
        'msg' => '文件类型不符!',
    ];
    echo json_encode($result);
    // echo "文件类型不符!";
    exit;
}

if ($filesize > $max_file_size) { // 文件大小判断

    $result = [
        'code' => '-1',
        'msg' => '文件太大!',
    ];
    echo json_encode($result);
    // echo "文件太大!";
    exit;
}
if (!is_dir("../file")) { //创建路径
    mkdir("../file");
}

$url = "../file/";

//当文件不存在

$url = $url . $fileName;

move_uploaded_file($_FILES["file"]["tmp_name"], $url);









//elsx文件路径
$inputFileName = "../file/" . $_FILES["file"]["name"];

date_default_timezone_set('PRC');
// 读取excel文件
try {
    $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
    $objReader = PHPExcel_IOFactory::createReader($inputFileType);
    $objPHPExcel = $objReader->load($inputFileName);
}
catch (Exception $e) {
    echo $e -> errorInfo;
}

// 确定要读取的sheet，什么是sheet，看excel的右下角，真的不懂去百度吧
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();


// 定义数据
$stu = [];
$tea = [];
$cou = [];
$stuSQL = new StuSql();
$teaSQL = new TeaSql();
$couSQL = new CouSql();
$flag = true;

// 获取excel文件的数据，$row=2代表从第二行开始获取数据
//学生信息创建
for ($row = 2; $row <= $highestRow; $row++) { // Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); //这里得到的rowData都是一行的数据，得到数据后自行处理，我们这里只打出来看看效果

    if (!array_key_exists($rowData[0][3],$stu)){
        $stu[$rowData[0][3]] = true;
        $data = [
            'id' => $rowData[0][3],
            'name' => $rowData[0][4],
            'class' => $rowData[0][5],
            'college' => $rowData[0][6],
        ];
        $flag = $stuSQL -> insert($data) & $flag;
        
    }
}
//教师信息创建
for ($row = 2; $row <= $highestRow; $row++) { // Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); //这里得到的rowData都是一行的数据，得到数据后自行处理，我们这里只打出来看看效果

    if (!array_key_exists($rowData[0][10],$tea)){
        $tea[$rowData[0][10]] = true;
        $teaSQL -> insert([
            'id' => $rowData[0][10],
            'name' => $rowData[0][11],
        ]);
    }
}
//课程信息创建
for ($row = 2; $row <= $highestRow; $row++) { // Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); //这里得到的rowData都是一行的数据，得到数据后自行处理，我们这里只打出来看看效果

    if (!array_key_exists($rowData[0][7],$cou)){
        $couSQL -> insert([
            'num' => $rowData[0][7],
            'name' => $rowData[0][8],
            'year' => $rowData[0][0],
            'term' => $rowData[0][1],
            'credits' => $rowData[0][9],
            'time' => $rowData[0][14],
            'address' => $rowData[0][13],
            'college' => $rowData[0][12],
            'cnum' => $rowData[0][2],
        ]);
    }
    if (!array_key_exists($rowData[0][7],$cou) || $cou[$rowData[0][7]] != $rowData[0][10]){
        $cou[$rowData[0][7]] = $rowData[0][10];
        $couSQL -> compareTeacher([
            'teahcerId' => $rowData[0][10],
            'courseId' => $rowData[0][7],
            'courseYaer' => $rowData[0][0],
            'courseTerm' => $rowData[0][1],
        ]);
    }
}

//选课信息创建
for ($row = 2; $row <= $highestRow; $row++) { // Read a row of data into an array
    $rowData = $sheet->rangeToArray('A' . $row . ':' . $highestColumn . $row, NULL, TRUE, FALSE); //这里得到的rowData都是一行的数据，得到数据后自行处理，我们这里只打出来看看效果

    $couSQL -> compareStu([
        'studentId' => $rowData[0][3],
        'courseId' => $rowData[0][7],
        'courseYaer' => $rowData[0][0],
        'courseTerm' => $rowData[0][1],
    ]);
}


if ($flag){
    $result = [
        'code' => '0',
        'msg' => '导入数据成功!',
    ];
}
else{
    $result = [
        'code' => '1',
        'msg' => '导入数据失败!',
    ];
}

echo json_encode($result);
